C语言fseek()、ftell()、rewind()函数

您所在的位置:网站首页 c rewind函数 C语言fseek()、ftell()、rewind()函数

C语言fseek()、ftell()、rewind()函数

#C语言fseek()、ftell()、rewind()函数| 来源: 网络整理| 查看: 265

这三个函数的功能是对文件流的位置指针进行定位,方便文件的读写操作;例如打开文件写入内容后,这时文件指针在末尾后一个字节,若需直接读出内容,可以选择关闭文件重新打开,这样文件指针重新指向文件首部,但这样来回打开关闭文件容易出错,可以使用fseek()函数对文件位置指针进行重定位,重新将指针定位到文件首部。

注意!!! 这里所说的“指针”并不是文件流指针,而是文件内部的位置指针;随着对文件的读写操作,文件的位置指针向后移动(指向当前读写字节),文件关闭后指针自动指向文件首部。文件流指针指向整个文件,不重新赋值指向不会改变。

fseek()函数

函数原型

#include int fseek(FILE *stream, long offset, int whence);

rewind()函数、fseek()函数以及ftell()函数都在标准IO库中,fseek()中stream表示文件流指针,whence表示想要定位的位置,offset表示偏移量,根据whence的位置需要移动的字节数,可正可负,正数表示正向偏移,负数表示反向偏移。fseek()可以设定访问文件的读写位置,可以以任意顺序访问文件的位置,从而实现文件的随机访问。

whence的常量描述:

常量数值描述SEEK_SET0文件首部SEEK_CUR1文件指针当前位置SEEK_END2文件尾部 SEEK_SET表示文件指针从文件首部偏移offset个字节(offset不能是负数),只能正向偏移SEEK_CUR表示文件指针从当前位置偏移offset个字节SEET_END表示文件指针从文件末尾偏移offset个字节(offset不能为正数),只能负向偏移 fseek(fp,0L,SEEK_SET); //定位到文件首部 fseek(fp,100,SEEK_SET); //定位到文件首部向后偏移100字节 fseek(fp,-100,SEEK_CUR); //定位到当前位置向前100字节 fseek(fp,0L,SEEK_END); //定位到文件尾部 fseek(fp,-50,SEEK_END); //定位到文件尾部向前50字节

fseek 函数只返回执行的结果是否成功,成功返回0,失败返回-1,并不返回文件的读写位置。

rewind()函数

函数原型

#include void rewind(FILE *stream);

rewind()函数中steam表示一个文件流指针,是将steam所指向文件的位置指针重新定位到文件首部,这个函数只能实现这一个功能;根据函数的原型,可以发现该函数的返回值为空,则无法判断其是否成功,也可以理解为该函数不会失败;因此在使用中最好使用fseek()函数进行替代。

rewind(fp); 等价于 fseek(fp,0L,SEEK_SET); ftell()函数

函数原型

#include long ftell(FILE *stream);

ftell()函数的参数与rewind()函数相同,是一个文件流指针,ftell()函数获取当前位置指针所在的字节数,返回值是长整型。在实际读写文件中,文件位置将会频繁的随意移动,到最后不知道位置指针指向哪里,就可以利用ftell()函数得到当前位置指针的位置,下面写一段代码,利用fseek()和ftell()获取文件的大小。

#include #include int main() { FILE *fp=NULL; fp=fopen("文件位置及名称“,"r"); //以只读形式打开文件 if(fp==NULL) { perror("fopen()"); exit(1); } fseek(fp,0L,SEEK_END); //将文件位置指针指向文件末尾 printf("File size is %ld.\n",ftell(fp); //长整型 exit(0); }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3